//package com.guchenbo.example.crypto;
//
//import org.apache.commons.codec.binary.Base64;
////import sun.misc.BASE64Decoder;
//
//import javax.crypto.Cipher;
//import javax.crypto.NoSuchPaddingException;
//import javax.crypto.spec.IvParameterSpec;
//import javax.crypto.spec.SecretKeySpec;
//import java.security.NoSuchAlgorithmException;
//
///**
// * @Author guchenbo
// * @Date 2018/3/17.
// */
//public class AesTest {
//
//    public static String encrypt2(String data) throws Exception {
//
//        try {
//            String key = "password";
//            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
//
//            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
//            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
//
//            return Base64.encodeBase64String(cipher.doFinal(data.getBytes()));
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        } catch (NoSuchPaddingException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    public static String decrypt2(String data) throws Exception {
//        try {
//            String key = "password";
//            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
//
//            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
//            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
//
//            return new String(cipher.doFinal(Base64.decodeBase64(data)));
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        } catch (NoSuchPaddingException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//    public static String encrypt(String data) throws Exception {
//        try {
//            String key = "1234567812345678";
//            String iv = "1234567812345678";
//
//            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
//            int blockSize = cipher.getBlockSize();
//
//            byte[] dataBytes = data.getBytes();
//            int plaintextLength = dataBytes.length;
//            if (plaintextLength % blockSize != 0) {
//                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
//            }
//
//            byte[] plaintext = new byte[plaintextLength];
//            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
//
//            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
//            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
//
//            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
//            byte[] encrypted = cipher.doFinal(plaintext);
//
//            return new sun.misc.BASE64Encoder().encode(encrypted);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//    //
//    //    public static String slat(String data) throws Exception {
//    //
//    //    }
//
//    public static String encryptOfb(String data) throws Exception {
//        try {
//            String key = "/Yl4TlnHJJlSVVb4Aomyxw==";
//            String iv = "56DZivx6rwoS7N4wblN7Kw==";
//
//            Cipher cipher = Cipher.getInstance("AES/OFB/PKCS5Padding");
//            int blockSize = cipher.getBlockSize();
//
//            byte[] dataBytes = data.getBytes();
//            int plaintextLength = dataBytes.length;
//            if (plaintextLength % blockSize != 0) {
//                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
//            }
//
//            byte[] plaintext = new byte[plaintextLength];
//            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
//
//            SecretKeySpec keyspec = new SecretKeySpec(Base64.decodeBase64(key), "AES");
//            IvParameterSpec ivspec = new IvParameterSpec(Base64.decodeBase64(iv));
//
//            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
//            byte[] encrypted = cipher.doFinal(plaintext);
//
//            return new sun.misc.BASE64Encoder().encode(encrypted);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//
//    public static String dncrypt(String data) throws Exception {
//        try {
//            String key = "0123456789abcdef";
//            String iv = "AAAAAAAAAAAAAAAA";
//
//            byte[] encrypted1 = new BASE64Decoder().decodeBuffer(data);
//
//            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
//            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
//            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
//
//            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
//
//            byte[] original = cipher.doFinal(encrypted1);
//            String originalString = new String(original);
//            return originalString;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//
//    public static void main(String[] args) throws Exception {
//        String data =
//
//                        "{\"token\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3Rkd2lkbS50ZWxrb21zZWwuY29tLyIsInN1YiI6InNtc3w1YWIxMGY1MmJmMDQyYTZmMTlkMGZhYTIiLCJhdWQiOiJYbGo5cGtmSzZ5WXVtZjZHOEtFMlM1VERXZ1R0Y3piMCIsImlhdCI6MTUyMTYxOTkyNSwiZXhwIjoxNTIxNjIwODI1fQ.XwrstXGylj_Zde-9L4pqXQKW4ZyzInV5iwBB09NiWKw\"}";
//
//        System.out.println(encryptOfb(data));
//
//        data = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9";
//        data = encrypt2(data);
//        System.out.println(decrypt2(data));
//    }
//}
